package com.sugon.service;

import com.cait.bpmsuite.api.bpmmodle.BPMWorkItem;
import com.sugon.entity.SysOaProcessEntity;
import com.sugon.modules.sparepart.model.vo.CommonApproveParamVO;

import java.util.List;
import java.util.Map;

/**
 * 备件领料OA审核Service接口
 *
 * @author sugon
 * @date 2021-12-15 10:54:05
 */
public interface SysOaProcessService {

    /**
     * 获取指定流程的审批记录
     *
     * @param procInstId 流程示例ID
     * @return
     */
    List<SysOaProcessEntity> listByProcInstId(String procInstId);

    /**
     * 列表查询
     *
     * @param busType
     * @param state
     * @return
     */
    List<SysOaProcessEntity> list(String busType, Integer state);

    /**
     * 根据主键查询实体
     *
     * @param id 主键
     * @return 实体
     */
    SysOaProcessEntity queryObject(String id);

    /**
     * 根据流程工作项ID查询实体
     *
     * @param processWorkItemId 流程工作项ID
     * @return 实体
     */
    SysOaProcessEntity queryByProcessWorkItemId(String processWorkItemId);

    /**
     * 分页查询
     *
     * @param map 参数
     * @return list
     */
    List<SysOaProcessEntity> queryList(Map<String, Object> map);

    /**
     * 分页统计总数
     *
     * @param map 参数
     * @return 总数
     */
    int queryTotal(Map<String, Object> map);

    /**
     * 保存实体
     *
     * @param sysOaProcess 实体
     * @return 保存条数
     */
    int save(SysOaProcessEntity sysOaProcess);

    /**
     * 生成OA流程处理记录
     *
     * @param busType     业务类型
     * @param busId       业务ID
     * @param bpmWorkItem 工作项
     * @param state       审核记录
     * @param remark      备注
     * @return
     */
    int generateProcessHandleRecord(String busType, String busId, BPMWorkItem bpmWorkItem, Integer state, String remark);

    /**
     * 生成OA流程处理记录
     *
     * @param busType      业务类型
     * @param busId        业务ID
     * @param workitemName 工作项名称
     * @param state        审核记录
     * @param remark       备注
     * @return
     */
    int generateProcessHandleRecord(String busType, String busId, String workitemName, Integer state, String remark);

    /**
     * 生成流程处理记录
     *
     * @param approveParam 备件领料单审核参数VO
     * @return
     */
    int generateProcessHandleRecord(CommonApproveParamVO approveParam);

    /**
     * 根据主键更新实体
     *
     * @param sysOaProcess 实体
     * @return 更新条数
     */
    int update(SysOaProcessEntity sysOaProcess);

    /**
     * 根据主键删除
     *
     * @param id
     * @return 删除条数
     */
    int delete(String id);

    /**
     * 根据主键批量删除
     *
     * @param ids
     * @return 删除条数
     */
    int deleteBatch(String[] ids);
}
